Skip to content

Conversation

@ikrommyd
Copy link
Collaborator

As far as I'm aware, jax, numexpr, pandas, and pyarrow all have 3.14 wheels. Numba only has them in pre-release at the time of writing. The requirements files should be updated accordingly

@codecov
Copy link

codecov bot commented Nov 18, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.71%. Comparing base (b749e49) to head (5dfe1ef).
⚠️ Report is 469 commits behind head on main.

Additional details and impacted files

see 200 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link

The documentation preview is ready to be viewed at http://preview.awkward-array.org.s3-website.us-east-1.amazonaws.com/PR3739

@ikrommyd ikrommyd requested review from henryiii and ianna November 18, 2025 22:30
@ariostas
Copy link
Collaborator

Since Ianna is on vacation and it's a non-controversial change, I'd say you can go ahead and merge it.

@ikrommyd ikrommyd merged commit af08e7b into scikit-hep:main Nov 19, 2025
43 checks passed
@ikrommyd ikrommyd deleted the ikrommyd/fix-requirements branch November 19, 2025 14:57
Copy link
Collaborator

@ianna ianna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both pandas and pyarrow frequently introduce breaking changes, especially around I/O behavior, column projection, and nested data handling. These changes can affect not only our documentation builds, but also our tests, examples, user workflows, and downstream integrations. To avoid unexpected breakages across the entire project, I suggest we take a more cautious approach to version bumps: pin or tightly constrain these dependencies, and test upgrades thoroughly before adopting them. This will help maintain stability and reproducibility across the whole ecosystem.

Comment on lines +2 to +6
jax[cpu]>=0.2.15;sys_platform != "win32"
numba>=0.50.0;sys_platform != "win32" and python_version < "3.14"
numexpr>=2.7
pandas>=0.24.0;sys_platform != "win32"
pyarrow>=12.0.0;sys_platform != "win32"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ikrommyd - have you checked which versions of the packages are pulled in with these relaxed conditions? Thanks.

Copy link
Collaborator Author

@ikrommyd ikrommyd Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well the latest on my system naturally. So that would be pyarrow 22 for example.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The restriction was only on the Python version, not on package versions. These were just in place because there where no wheels for 3.13/3.14 at the time, so it made sense to remove them. We could additionally add an upper bound on package versions if you think they are needed.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah for 3.15 I guess for when that comes out. We will touch this file again to remove the numba restriction too so it can be done then.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The restriction was only on the Python version, not on package versions. These were just in place because there where no wheels for 3.13/3.14 at the time, so it made sense to remove them. We could additionally add an upper bound on package versions if you think they are needed.

That was my question - have the changes been tested locally? Thanks.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, locally, and most importantly, they're also being tested in the CI. We added this so that the integration tests (which I'm working on in scikit-hep/integration-tests#13) were a bit more comprehensive.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's the log with 3.13 and then with 3.14 for reference if you want it on fresh environments.

~ via 󰏗 v0.56.0
❯ uv venv -p3.13
Using CPython 3.13.9 interpreter at: /opt/homebrew/opt/[email protected]/bin/python3.13
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

~ via 󰏗 v0.56.0
❯ source .venv/bin/activate

~ via  v3.13.9 (iason) via 󰏗 v0.56.0
❯ cd awkward
󱞩 /Users/iason/work/pyhep_dev/awkward

awkward on  main [?] is 󰏗 v2.8.10 via  v3.13.9 (iason)
❯ uv pip install -r requirements-test-full.txt
Using Python 3.13.9 environment at: /Users/iason/.venv
Resolved 31 packages in 1.13s
Prepared 7 packages in 6.26s
Installed 31 packages in 245ms
 + awkward==2.8.10
 + awkward-cpp==50
 + coverage==7.12.0
 + cramjam==2.11.0
 + execnet==2.1.2
 + fsspec==2025.10.0
 + iniconfig==2.3.0
 + jax==0.8.1
 + jaxlib==0.8.1
 + llvmlite==0.45.1
 + ml-dtypes==0.5.4
 + numba==0.62.1
 + numexpr==2.14.1
 + numpy==2.3.5
 + opt-einsum==3.4.0
 + packaging==25.0
 + pandas==2.3.3
 + pluggy==1.6.0
 + pyarrow==22.0.0
 + pygments==2.19.2
 + pytest==9.0.1
 + pytest-cov==7.0.0
 + pytest-xdist==3.8.0
 + python-dateutil==2.9.0.post0
 + pytz==2025.2
 + safetensors==0.7.0
 + scipy==1.16.3
 + six==1.17.0
 + tzdata==2025.2
 + uproot==5.6.8
 + xxhash==3.6.0

awkward on  main [?] is 󰏗 v2.8.10 via  v3.13.9 (iason) took 7s
❯ deactivate

awkward on  main [?] is 󰏗 v2.8.10 via  v3.14.0
❯ cd

~ via 󰏗 v0.56.0
❯ rm -rf .venv

~ via 󰏗 v0.56.0
❯ uv venv -p3.14
Using CPython 3.14.0 interpreter at: /opt/homebrew/opt/[email protected]/bin/python3.14
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

~ via 󰏗 v0.56.0
❯ source .venv/bin/activate

~ via  v3.14.0 (iason) via 󰏗 v0.56.0
❯ cd awkward
󱞩 /Users/iason/work/pyhep_dev/awkward

awkward on  main [?] is 󰏗 v2.8.10 via  v3.14.0 (iason)
❯ uv pip install -r requirements-test-full.txt
Using Python 3.14.0 environment at: /Users/iason/.venv
Resolved 29 packages in 181ms
Prepared 6 packages in 2.79s
Installed 29 packages in 160ms
 + awkward==2.8.10
 + awkward-cpp==50
 + coverage==7.12.0
 + cramjam==2.11.0
 + execnet==2.1.2
 + fsspec==2025.10.0
 + iniconfig==2.3.0
 + jax==0.8.1
 + jaxlib==0.8.1
 + ml-dtypes==0.5.4
 + numexpr==2.14.1
 + numpy==2.3.5
 + opt-einsum==3.4.0
 + packaging==25.0
 + pandas==2.3.3
 + pluggy==1.6.0
 + pyarrow==22.0.0
 + pygments==2.19.2
 + pytest==9.0.1
 + pytest-cov==7.0.0
 + pytest-xdist==3.8.0
 + python-dateutil==2.9.0.post0
 + pytz==2025.2
 + safetensors==0.7.0
 + scipy==1.16.3
 + six==1.17.0
 + tzdata==2025.2
 + uproot==5.6.8
 + xxhash==3.6.0

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for approving and merging this PR - it’s good to see Awkward moving toward Python 3.14 compatibility. At the same time, Numba features are critical for many workflows, and users may be confused if they upgrade and find those features unavailable. To avoid surprises, could we add a clear compatibility notice and CI safeguards for Python 3.14? And for future PRs that affect core dependencies or Python version support, let’s agree to discuss them before merging, so we balance flexibility with reproducibility.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants